本系列文以製作專案為主軸,紀錄小弟學習React以及GrahQL的過程。主要是記下重點步驟以及我覺得需要記憶的部分,有覺得不明確的地方還請留言多多指教。
前幾篇建立好了Apollo Server,不過都是用寫死的假資料在處理,現在要準備來串接到資料庫上。
Apollo官方的範例是使用sequelize做資料庫存取,不過在HOW TO GRAPHQL的教學中使用了Prisma套件,很有趣,就學著用然後來筆記些重點。
Prisma是一套資料庫工具,提供好上手的資料庫串接功能,目前可銜接PostgreSQL,MySQL,SQLite。
整個套件包含幾組工具:
而以上工具都基於 Prisma Schema運作,Prisma Schema是用於定義資料架構與關聯的檔案,會像這樣:
model User {
id Int @default(autoincrement()) @id
birthDate DateTime
email String @unique
firstName String?
lastName String?
posts Post[]
}
model Post {
content String?
post_id Int @default(autoincrement()) @id
title String
author_id User
}
很像GraphQL Schema對不對?
簡化的Prisma介面建立步驟大致如下:
編輯好Schema後大部分的操作都是根據指令自動的,這也是Prisma方便的地方。
結論而言,Prisma不是ORM。
Prisma的作用與ORM相同,都是在javascript程式中建立資料庫參照,並根據該參照產生javascript的CRUD方法,讓人不用直接撰寫SQL就能存取資料庫。
而ORM,以sequelize為例,會將資料庫的表單、欄位轉換成javascript Object,並在Object間建立關聯以匹配資料庫的關聯關係。
而Prisma建立關聯的方式是撰寫Prsima Schema,並解析Schema後產生Prisma Client,並未建立Object所以不是ORM,
而Prisma認為這個方式可以解決ORM的幾個問題: